import { LinkedList } from './LinkedList'

// 使用链表实现栈的实现, 链表栈的效率比数组栈要好, 因为数组栈经常需要扩容, 而链表栈需要经常 new 创建节点

export class LinkedListStack<E> {
  private list: LinkedList<E> = new LinkedList()

  // constructor() { }

  /**
   * getSize
   */
  public getSize() {
    return this.list.getSize()
  }

  /**
   *  push
   */
  public push(e: E) {
    this.list.addFirst(e)
  }

  /**
   * pop
   */
  public pop() {
    return this.list.removeFirst()
  }

  /**
   * peek
   */
  public peek() {
    return this.list.getFirst()
  }

  /**
   *  isEmpty
   */
  public isEmpty() {
    return this.list.isEmpty()
  }

  /**
   * print
   */
  public print() {
    this.list.print()
  }

}
